Content addressable memory (CAM) is being increasingly used in search engines today. In addition to performing read and write operations, this type of memory accepts data as input and returns an address as its output. This is in contrast to the normal memory, which only takes an address as an input and returns data stored at that address as an output.
A CAM receives a data input or a data sample often termed a “word” (i.e., a plurality of bits or trits). The size of a CAM is not standard and in current usage it is often quite long. A typical CAM contains, among other logic blocks: a CAM array block, a match detection block, and a Priority Encoder block. The CAM array block contains CAM cells and comparison logic. The match detection block contains logic and sense amplifiers which determine if such a word being processed has any matches and produces a match signal for each content word compared against. The Priority Encoder block contains logic to process a set of match signals and to determine any matches of a received word are indicated, and to pick among all such matches to establish one as having priority according to a pre-established rule. The CAM then outputs the address of a highest priority match as a result output.
Larger CAMs are generally slow. Partitioning them into two separate CAMs and combining their match results in an External Priority Encoder can give a better performance than a single large CAM. However, this has posed many problems including synchronization of match information and control signals in the logic used for combining, ability to combine CAMs of different widths, combine match results while allowing just one or both CAMs enabled, or timing mismatches between the two CAMs.
The performance of a CAM is generally limited by its size. It is often necessary and useful to get a larger CAM, with more bits per word without losing performance. Other problems encountered in combining two CAMs are the ability to differentiate valid (e.g., both the CAMs in search mode) versus invalid (e.g., one CAM in read, and the other CAM in search mode) combinations without getting locked up.